#ifndef DATAUTILS_H
#define DATAUTILS_H

#include <QDate>
#include <QString>
#include <QTimeZone>

// 日期转星期类，包括时区变化处理
class DateUtils {
public:
    static QString dateToWeek(const QString& dateStr,
                              const QString& sourceTimezone);
};

// 风向转换类
class WindUtils {
public:
    static QString degreeToDirection(double degree);

    // 获取风力等级
    static QString windLevelString(double windSpeedKmh) {
        return QString("%1级").arg(getWindLevel(windSpeedKmh));
    }

private:
    // 国内风力等级标准（GB/T 35221-2017）
    static int getWindLevel(double windSpeedKmh);
};

// 处理天气图标的路径映像
class IconUtils {
private:
    static const QHash<QString, QString> ICON_MAP;

public:
    static QString getIconPath(const QString& iconType) {
        return ICON_MAP.value(iconType.toLower(), "  ");
    }
};

class CityConverter : public QObject {
    Q_OBJECT

public:
    // explicit CityConverter(QObject *parent = nullptr);
    static QString toPinyin(const QString &input);
    static QString toChinese(const QString &input);

private:
    struct CityData {
        QHash<QString, QString> cityToPinyin;   // 中文到拼音映射
        QHash<QString, QString> pinyinToCity;   // 拼音（小写） → 中文
        QSet<QString> pinyinSet;                // 所有有效拼音集合
    };

    static CityData loadCityData(); // 数据加载
    static QString processInput(const QString &input); // 输入预处理
};

#endif // DATAUTILS_H
